﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using l1cs.server.model.Instance;
using l1cs.server.serverpackets;
using l1cs.server.model.skill;

namespace l1cs.server.clientpackets
{
    public class C_ExtraCommand : ClientBasePacket
    {
        private const String _C_EXTRA_COMMAND = "[C] C_ExtraCommand";
        private static Logger _log = Logger.getLogger( typeof( C_ExtraCommand ).FullName );

        public C_ExtraCommand( byte[] abyte0, ClientThread client )
            : base( abyte0 )
        {
            int actionId = readC();
            L1PcInstance pc = client.getActiveChar();
            if ( pc.isGhost() )
            {
                return;
            }
            if ( pc.isInvisble() )
            { // インビジビリティ、ブラインドハイディング中
                return;
            }
            if ( pc.isTeleport() )
            { // テレポート処理中
                return;
            }
            if ( pc.hasSkillEffect( L1SkillId.SHAPE_CHANGE ) )
            { // 念の為、変身中は他プレイヤーに送信しない
                int gfxId = pc.getTempCharGfx();
                if ( gfxId != 6080 && gfxId != 6094 )
                { // 騎馬用ヘルム変身は例外
                    return;
                }
            }
            S_DoActionGFX gfx = new S_DoActionGFX( pc.getId(), actionId );
            pc.broadcastPacket( gfx ); // 周りのプレイヤーに送信
        }

        override
        public String getType()
        {
            return _C_EXTRA_COMMAND;
        }
    }
}